package service;

import java.sql.SQLException;
import java.util.List;

import DAO.BaseDAO;
import pageUtil.PageB;

public class PageService<T> {
    private BaseDAO<T> dao;

    public PageService(BaseDAO<T> dao) {
        this.dao = dao;
    }

    public PageB<T> paging(PageB<T> bean,String sql,String sql2) throws Exception {
        // 获取总记录数
        try {
            int total = dao.dataCount(sql2);
            // 计算总页数
            int totalPage = 1;
            if (total % bean.getPageSize() == 0) {
                totalPage = total / bean.getPageSize();
            }else if(total==0){
                totalPage = 1;
            }
            else {
                totalPage = total / bean.getPageSize() + 1;
            }

            //防止无限上一页
            if(bean.getCurrentPage() < 1){
                bean.setCurrentPage(1);
            }

            //防止无限下一页
            if(bean.getCurrentPage() > total){
                bean.setCurrentPage(totalPage);
            }

            //设置总条数，总页数，上一页，下一页，尾页
            bean.setTotalNum(total);
            bean.setTotalPage(totalPage);
            bean.setPre(bean.getCurrentPage()-1);
            bean.setNext(bean.getCurrentPage()+1);
            bean.setLast(totalPage);

            //查询当页显示的数据
            List<T> list = dao.findByPage(bean,sql);
            bean.setList(list);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return bean;
    }

}
